#pragma once
#include "utils/any.hpp"
#include <vector>
#include <string>

namespace JHCPP
{
	namespace utils
	{
		std::string format(const std::string& fmt, const CAny& value);
		std::string format(const std::string& fmt, const CAny& value1, const CAny& value2);
		std::string format(const std::string& fmt, const CAny& value1, const CAny& value2, const CAny& value3);
		std::string format(const std::string& fmt, const CAny& value1, const CAny& value2, const CAny& value3, const CAny& value4);
		std::string format(const std::string& fmt, const CAny& value1, const CAny& value2, const CAny& value3, const CAny& value4, const CAny& value5);
		std::string format(const std::string& fmt, const CAny& value1, const CAny& value2, const CAny& value3, const CAny& value4, const CAny& value5, const CAny& value6);

		void format(std::string& result, const std::string& fmt, const CAny& value);
		void format(std::string& result, const std::string& fmt, const CAny& value1, const CAny& value2);
		void format(std::string& result, const std::string& fmt, const CAny& value1, const CAny& value2, const CAny& value3);
		void format(std::string& result, const std::string& fmt, const CAny& value1, const CAny& value2, const CAny& value3, const CAny& value4);
		void format(std::string& result, const std::string& fmt, const CAny& value1, const CAny& value2, const CAny& value3, const CAny& value4, const CAny& value5);
		void format(std::string& result, const std::string& fmt, const CAny& value1, const CAny& value2, const CAny& value3, const CAny& value4, const CAny& value5, const CAny& value6);

		void format(std::string& result, const std::string& fmt, const std::vector<CAny>& values);
	
	}//end of namespace utils
}//end of namespace JHCPP
